Поиск уникальных строк

Поиск уникальных строк

На днях встала задача разобрать текстовый файл на предмет уникальных позиций. Промучившись с полчаса над ручным поиском неидентичных строк, был написан простенький скрипт на perl для поиска этих строк в текстовом файле и вывода их в отдельном файле в порядке их первого вхождения в исходном текстовике. Входной файл для этого скрипта имеет имя input.txt, а выходной - output.txt. Этот скрипт не претендует на особую изящность или высокую производительность, но он работает и свою задачу выполняет.

Надеюсь, кому-нибудь пригодится.

  1. #!/usr/bin/perl
  2. # Поиск уникальных строк в файле и вывод их в другой файл
  3.  
  4. #Открытие входного файл
  5. open FF,"<input.txt";
  6. @mas=<FF>;
  7. close FF;
  8.  
  9. $mas2[0]=$mas[0];
  10.  
  11. #Поиск уникальных вхождений строк
  12. for (0..$#mas) {
  13.         $mn=$_;
  14.         #счетчик вхождения искомой строки
  15.         $nim=0;
  16.         for (0..$#mas2) {
  17.                 if ($mas[$mn] eq $mas2[$_]) {
  18.                         $nim++;
  19.                 }
  20.         }
  21.         #Если строка не найдена в выходном массиве,
  22.         #то добавить строку в него
  23.         if ($nim==0) {
  24.                 push(@mas2,$mas[$mn]);
  25.         }
  26. }
  27.  
  28. #Запись результатов в файл
  29. open FF,">output.txt";
  30. for (0..$#mas2) {
  31.         print FF $mas2[$_];
  32. }
  33. close FF;